package com.huiying.service.Impl;

import com.huiying.service.FileUrlService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

@Service // 标记为Spring服务组件
public class FileUrlServiceImpl implements FileUrlService {

    // 从 application.yml 或 application-dev.yml 中读取服务器地址
    // 如果没有配置，默认为 localhost
    @Value("${server.address:localhost}")
    private String serverAddress;

    // 从 application.yml 或 application-dev.yml 中读取服务器端口
    // 如果没有配置，默认为 8080
    @Value("${server.port:8080}")
    private String serverPort;

    // 静态资源映射的 URL 前缀
    // 这个值必须与你在 Spring Boot 配置中（application.yml 或 WebConfig.java）
    // 映射本地文件目录的 URL 路径保持一致。
    // 例如，如果你在 WebConfig 中配置了 registry.addResourceHandler("/files/**")
    // 那么这里就是 "/files/"
    private static final String STATIC_RESOURCE_URL_PREFIX = "/my-files/"; // <<-- 请确保这个路径和你实际配置的静态资源映射路径一致

    @Override
    public String generateFileAccessUrl(String storedFileName) {
        if (storedFileName == null || storedFileName.isEmpty()) {
            return null; // 或者返回一个默认的占位图 URL，例如 "http://yourdomain.com/default_image.png"
        }

        // 拼接完整的 URL
        // 注意：在实际生产环境中，你可能需要考虑以下几点：
        // 1. 使用 HTTPS 而不是 HTTP (即 "https://" 而不是 "http://")
        // 2. 使用你的实际域名而不是 "localhost:port"
        //    例如，可以从配置文件中读取一个 base-url 属性： @Value("${app.base-url}") private String appBaseUrl;
        //    然后返回 String.format("%s%s%s", appBaseUrl, STATIC_RESOURCE_URL_PREFIX, storedFileName);
        
        return String.format("http://%s:%s%s%s", serverAddress, serverPort, STATIC_RESOURCE_URL_PREFIX, storedFileName);
    }
}